package plp.imperative2.expression;

import plp.expressions1.util.Tipo;
import plp.expressions1.util.TipoPrimitivo;
import plp.expressions2.expression.ValorConcreto;
import plp.expressions2.memory.AmbienteCompilacao;

public class ValorData extends ValorConcreto<Data> {

	public ValorData(Data data) {
		super(data);
	}
	
	public Tipo getTipo(AmbienteCompilacao amb){
		return TipoPrimitivo.DATA;
	}

	@Override
	public ValorConcreto<Data> clone() {
		return new ValorData(this.valor());
	}

	@Override
	public boolean isGreaterThan(ValorConcreto<Data> obj) {
		return valor().getValue().isAfter(obj.valor().getValue());
	}

	@Override
	public boolean isLessThan(ValorConcreto<Data> obj) {
		return valor().getValue().isBefore(obj.valor().getValue());
	}

	@Override
	public boolean isGreaterThanOrEqual(ValorConcreto<Data> obj) {
		return valor().getValue().isAfter(obj.valor().getValue()) || valor().getValue().equals(obj.valor().getValue());
	}

	@Override
	public boolean isLessThanOrEqual(ValorConcreto<Data> obj) {
		return valor().getValue().isBefore(obj.valor().getValue()) || valor().getValue().equals(obj.valor().getValue());
	}

}
